<?php
namespace think\log\driver;

use SeasLog;

class SeaLog extends SeasLog
{
 

  /**
   * 配置
   *
   * @var array 第一个是模型的名字,各个模块抛出的错误放置在自己模块的文件夹中,如果是框架内部记录的日志,则放在 FRAME 文件夹里
   */
  protected $config = [

    'module' => 'FRAME',
    'path' => LOG_PATH

  ];

  // 安全级别
  protected $level = ['emergency','alert', 'critical', 'error', 'warning', 'notice', 'info', 'debug'];


  /**
   * 构造函数
   *
   * @param array $config 配置变量
   */
  public function __construct($config = [])
  {
    if (isset($config['module'])) {
      $this->config['module'] = $config['module'];
    }
    if (isset($config['path'])) {
      $this->config['path'] = $config['path'];
    }

    //更改日志的文件名和存放路径
    parent::setLogger($this->config['module']);
    parent::setBasePath($this->config['path']);
  }

  /**
   * 保存
   *
   * @param array $log 是一个二维数组,第一层是日志的等级,第二层是日志信息
   * @return void
   */
  public function save(array $log = [])
  {
    $message = '';
    foreach ($log as $level => $val) {

      //判断错误级别
      if (in_array($level, $this->level)) {
        $level = strtoupper($level);
      } else if ($level === 'sql') {
        $level = 'SQL';
      }else{
        $level ='DEBUG';
      }

      //拼接错误信息
      foreach ($val as $msg) {
        if (!is_string($msg)) {
          $msg = var_export($msg, true);
        }

        $message .= "\r\n" .$msg;
      }

      // 日志信息存放在buffer中
      parent::log($level,$message);
    }
    //存放在日志文件中
    parent::flushBuffer();
  }
}